package com.navinfo.platform.trip.analysis.pojo;

import com.navinfo.platform.trip.common.arithmetic.data.InterCrossDay;
import com.navinfo.platform.trip.common.pojo.TripInfo;
import lombok.Data;

import java.io.Serializable;

/**
 * 东风预见性维修
 * 输出的行程统计数据
 * @author: web
 * @data: 2020-04-10
 **/
@Data
public class DF_OuterStatisticData implements Serializable {
    /**
     * 终端号
     **/
    private Long tid;
    /**
     * 行程ID
     **/
    private Integer tripId;
    /**
     * 行程所在的日期，格式 YYYYMMDD
     */
    private String tripDay;
    /**
     * 车辆行程开始时间，单位：秒s<br/>
     * 离线计算：取0200的第一个有效点
     **/
    private Long routeStartTime;
    /**
     * 行程开始时所在区域编号<br/>
     * 由{@link TripInfo#getStartLatitude()}{@link TripInfo#getStartLongitude()}计算得来
     **/
    private Integer routeStartLc;
    /**
     * 车辆行程开始纬度 以度为单位的纬度值乘以 10 的 6 次方，精确到百万分之一度<br/>
     * 离线计算：取0200的第一个有效点
     **/
    private Integer routeStartLatitude;
    /**
     * 车辆行程开始经度 以度为单位的纬度值乘以 10 的 6 次方，精确到百万分之一度<br/>
     * 离线计算：取0200的第一个有效点
     **/
    private Integer routeStartLongitude;
    /**
     * 车辆行程开始高程 单位:M<br/>
     * 离线计算：取0200的第一个有效点
     **/
    private Integer routeStartHeight;
    /**
     * 车辆行程开始方向0-359正北为0顺时针<br/>
     * 离线计算：取0200的第一个有效点
     **/
    private Integer routeStartDirection;
    /**
     * 行程开始车辆总里程 单位:M<br/>
     * 离线计算：取0200的第一个有效点的标准总里程
     **/
    private Integer routeStartMileage;
    /**
     * 行程开始车辆总油耗 单位:ML
     * 离线计算：取0200的第一个有效点的标准总油耗
     **/
    private Integer routeStartFuel;

    /**
     * 车辆行程结束时间，单位：秒s<br/>
     * 离线计算：取0200的最后一个有效点
     **/
    private Long routeEndTime;
    /**
     * 行程结束时所在区域编号
     * 离线计算：由{@link TripInfo#getEndLatitude()}{@link TripInfo#getEndTime()} 计算得来
     **/
    private Integer routeEndLc;
    /**
     * 车辆行程结束纬度 以度为单位的纬度值乘以 10 的 6 次方，精确到百万分之一度<br/>
     * 离线计算：取0200的最后一个有效点
     **/
    private Integer routeEndLatitude;
    /**
     * 车辆行程结束经度 以度为单位的纬度值乘以 10 的 6 次方，精确到百万分之一度<br/>
     * 离线计算：取0200的最后一个有效点
     **/
    private Integer routeEndLongitude;
    /**
     * 车辆行程结束高程 单位:M<br/>
     * 离线计算：取0200的最后一个有效点
     **/
    private Integer routeEndHeight;
    /**
     * 车辆行程结束方向0-359正北为0顺时针<br/>
     * 离线计算：取0200的最后一个有效点
     **/
    private Integer routeEndDirection;
    /**
     * 行程结束车辆总里程 单位:M<br/>
     * 离线计算：{@link DF_OuterStatisticData#routeStartMileage}+{@link DF_OuterStatisticData#tripMileage}
     **/
    private Integer routeEndMileage;
    /**
     * 行程结束车辆总油耗 单位:ML<br/>
     * 离线计算：{@link DF_OuterStatisticData#routeStartFuel}+{@link DF_OuterStatisticData#tripFuel}
     **/
    private Integer routeEndFuel;

    /**
     * 行程内积分里程，单位:M<br/>
     * {@link com.navinfo.platform.trip.common.arithmetic.Mileage}计算得来
     **/
    private Integer routeIntegralMileage;
    /**
     * 行程内积分油耗，单位:ML<br/>
     *  {@link com.navinfo.platform.trip.common.arithmetic.Mileage}计算得来
     **/
    private Integer routeIntegralFuel;
    /**
     * 行程内积分时长（引擎工作时长），单位:S
     *  {@link com.navinfo.platform.trip.common.arithmetic.Mileage}计算得来
     **/
    private Integer routeIntegralDuration;

    /**
     * 行程内精准里程，单位:M<br/>
     * 离线计算：根据0200结果精准后的行程内里程，（该行程0200的精准里程/当天所有行程的精准里程和）* 根据0200点精准的当天总里程
     **/
    private Integer tripMileage;
    /**
     * 行程内精准油耗，单位:ML<br/>
     * 离线计算：根据0200结果精准后的行程内油耗，（该行程0200的精准油耗/当天所有行程的精准油耗和）* 根据0200点精准的当天总油耗
     **/
    private Integer tripFuel;
    /**
     * 行程内精准时长，单位:秒S，
     * 离线计算：据0200结果精准后的行程内时长，单位:秒 （行程结束时间-开始时间）=引擎工作时长engineWorkTime
     * {@link DF_OuterStatisticData#routeEndTime}+{@link DF_OuterStatisticData#routeStartTime}
     **/
    private Integer tripDuration;
    /**
     * 行程消耗功率 单位: KW/H<br/>
     *  {@link com.navinfo.platform.trip.common.arithmetic.TripPower}计算得来
     **/
    private Integer tripPower;

    /**
     * 是否精准里程油耗 1:精准 0:未精准<br/>
     **/
    private Integer preciseFlag;
    /**
     * 行程数据切分类型(1:基于0f37数据来生成和统计行程 2:根据0200数据来切分行程和统计行程)
     **/
    private Integer sType;

    /**
     * 行程跨天标识
     * 离线计算：AbstractAlgorithmChainService设置。0：不跨天，1，一天中的第一个行程跨天 2，一天中的最后一个行程跨天
     * 实时计算：ProtocolParserMix设置。0不跨天，1跨天
     **/
    private Integer crossDayFlag;
    /**
     * 跨天行程的前段信息<br/>
     * 实时计算使用
     */
    private InterCrossDay interCrossDay;

    /**
     * 急转弯次数<br/>
     * {@link com.navinfo.platform.trip.common.arithmetic.SharpTurning_DFN}计算得来
     **/
    private Integer sharpTurningNumber;
    /**
     *  夜晚开车次数<br/>
     *  {@link com.navinfo.platform.trip.common.arithmetic.DrivingNight_DFN}计算得来
     **/
    private Integer nightRunningNumber;
    /**
     *  紧急停车次数<br/>
     *  {@link com.navinfo.platform.trip.common.arithmetic.EmergencyStop_DFN}计算得来
     **/
    private Integer emergencyStopNumber;
    /**
     * 熄火滑行次数<br/>
     *  {@link com.navinfo.platform.trip.common.arithmetic.CoastFlameout_DF}计算得来
     **/
    private Integer flameoutCoastNumber;

    /**
     *  冷车运行距离 单位:M<br/>
     *  {@link com.navinfo.platform.trip.common.arithmetic.DrivingCold_DFN}计算得来
     **/
    private Integer coldRunningMileage;
    /**
     * 冷车运行油耗 单位:ML<br/>
     *  {@link com.navinfo.platform.trip.common.arithmetic.DrivingCold_DFN}计算得来
     **/
    private Integer coldRunningFuel;
    /**
     * 冷车运行时长 单位:S<br/>
     *  {@link com.navinfo.platform.trip.common.arithmetic.DrivingCold_DFN}计算得来
     **/
    private Integer coldRunningDuration;
    /**
     * 冷车运行次数<br/>
     *  {@link com.navinfo.platform.trip.common.arithmetic.DrivingCold_DFN}计算得来
     **/
    private Integer coldRunningNumber;

    /**
     * 非经济行驶里程 单位:M<br/>
     * {@link com.navinfo.platform.trip.common.arithmetic.DrivingEcoNo_DFN}计算得来
     **/
    private Integer noEcoDrivingMileage;
    /**
     * 非经济行驶油量 单位:ML<br/>
     * {@link com.navinfo.platform.trip.common.arithmetic.DrivingEcoNo_DFN}计算得来
     **/
    private Integer noEcoDrivingFuel;
    /**
     * 非经济行驶时长 单位:S<br/>
     * {@link com.navinfo.platform.trip.common.arithmetic.DrivingEcoNo_DFN}计算得来
     **/
    private Integer noEcoDrivingDuration;
    /**
     * 非经济行驶次数<br/>
     * {@link com.navinfo.platform.trip.common.arithmetic.DrivingEcoNo_DFN}计算得来
     **/
    private Integer noEcoDrivingNumber;
    /**
     * 非经济行驶时长占比，单位：%<br/>
     */
    private Integer noEcoDrivingProportion;

    /**
     * 疲劳驾驶次数<br/>
     * {@link com.navinfo.platform.trip.common.arithmetic.DrivingFatigue}计算得来
     **/
    private Integer fatigueDrivingNumber;
    /**
     * 疲劳驾驶时长<br/>
     * {@link com.navinfo.platform.trip.common.arithmetic.DrivingFatigue}计算得来
     **/
    private Integer fatigueDrivingDuration;

    /**
     * 百公里油耗，单位:L/100KM
     */
    private Integer fuel100KM;
    /**
     * 行程百公里急加速次数
     */
    private Integer sharpUpSpeedNumber100KM;
    /**
     * 行程百公里急减速次数
     */
    private Integer sharpDownSpeedNumber100KM;
    /**
     * 行程百公里急转弯次数
     */
    private Integer sharpTurningNumber100KM;
    /**
     * 行程百公里紧急停车次数
     */
    private Integer emergencyStopNumber100KM;
    /**
     * 行程百公里熄火滑行次数
     */
    private Integer flameOutCoastNumber100KM;

    /**
     * 行程每小时超速时间，单位s
     */
    private Integer speedOverDurationHourly;
    /**
     * 行程每小时超长怠速时间，单位s
     */
    private Integer longIdleDurationHourly;
    /**
     * 行程每小时大油门时间，单位s
     */
    private Integer largeGasDurationHourly;
    /**
     * 行程每小时非经济转速时间，单位s
     */
    private Integer noEcoDurationHourly;
    /**
     * 行程每小时空档滑行时间，单位s
     */
    private Integer neutralGearCoastDurationHourly;
    /**
     * 行程每小时疲劳驾驶时间，单位s
     */
    private Integer fatigueDrivingDurationHourly;
    /**
     * 行程每小时夜晚行车时间，单位s
     */
    private Integer nightRunningDurationHourly;

}
